/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package org.dahg.project.web;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.dahg.project.controller.model.Factura;
import org.dahg.project.controller.model.Item;
import org.dahg.project.controller.model.Producto;
import org.dahg.project.controller.model.exceptions.ControllerException;
import org.dahg.project.controller.model.services.local.PedidoService;

/**
 *
 * @author dahg
 */
@ManagedBean
@SessionScoped
public class PedidoBean extends AbstractWebBean {
    
    @EJB
    private PedidoService service;
    
    private Factura pedido;

    @PostConstruct
    public void init() {
        pedido = new Factura();
        List<Item> items = new ArrayList<Item>();
        pedido.setItems(items);
    }
    
    public String addProducto(Producto producto) {
        Item item = new Item();
        item.setFactura(pedido);
        item.setProducto(producto);
        
        boolean encontrado=false;
        for(Item i:pedido.getItems()) {
            if(i.equals(item)) {
                i.setCantidad(i.getCantidad()+1);
                encontrado=true;
            }
        }
        
        if(!encontrado) {
            item.setCantidad(1);
            pedido.getItems().add(item);
        }
        
        addInfo("Producto agregado al pedido");
        return null;
    }
    
    public String savePedido() {
        try {
            if(pedido.getCliente()==null | pedido.getCliente().isEmpty())
                throw new ControllerException("Debe ingresar un cliente");
            
            if(pedido.getMesa()==null || pedido.getMesa().isEmpty())
                throw new ControllerException("Debe ingresar una mesa");
            
            if(pedido.getItems()==null || pedido.getItems().isEmpty())
                throw new ControllerException("Debe ingresar productos");
            
            pedido.setFecha(new java.util.Date());
            pedido.setCerrada(Boolean.FALSE);
            service.persist(pedido);
            addInfo("Pedido guardado exitosamente");
            pedido=null;
            init();
        } catch (ControllerException ex) {
            addError(ex.getMessage());
        }
        return null;
    }
    
    public Factura getPedido() {
        return pedido;
    }

    public void setPedido(Factura pedido) {
        this.pedido = pedido;
    }
    
    
}
